找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 15464|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 | 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr' F8 ~! t! V) ^6 P1 k; n& @5 k! E
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig" J$ l' K4 @" T7 c
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:- E; i- t5 q0 v; L3 a( I; b
usage: himr <address> <value>. sample: himr 0x80040000 0x0. R- a! L; f& c$ x
$ y+ H: U- b# Y. B

) b0 N2 ?/ z0 ~" K: b& U) |4 R8 d不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?4 I. Q" w4 w/ g, u8 x
0 D7 w' i9 S$ R
补充内容 (2012-3-8 09:42):
9 H) M& t& S8 E  W1 q" R; fhttp://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数
$ Q' x  P! r! H5 f7 m8 c这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 | 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 | 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 | 显示全部楼层
估计就是执行这个命令。
1 F' v7 L3 @9 o9 Q" Y3 o" {: R. P5 B9 M" i4 w+ E* y
himr <address> <value>. sample: himr 0x80040000 0x0
  N+ o; c+ r( |4 C$ b+ @" |/ U0 ?
! L# g$ \7 _; _" M例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。
. B: P; x, U/ m$ q/ J0 ~/ p* Rhimr 0x80040000 0x00& x4 ^- Q" p0 A6 R8 x
himr 0x80040001 0x11
* \3 u: A; ~4 s' U. F& i* q% O( e+ Ahimr 0x80040002 0x22
1 Y9 l$ b- L  h' g: yhimr 0x80040003 0x33: E7 c8 e7 ?" p$ E
himr 0x80040004 0x44) z4 y% m3 ?2 U
himr 0x80040005 0x55
! ~2 _. W$ a7 @! q9 E) v) B2 m; A" N" d0 v: |8 ?' f% y% j
SN也是类似。
4 f- [* N0 M6 J$ J) C* [2 ~; T7 d" H7 o8 n  ^5 V( T! Q
现在主要是,谁告诉我们MAC和SN的地址?
7 A; i. U! d) G' _: s1 I
发表于 2012-3-10 11:37:46 | 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 | 显示全部楼层
wowocom 发表于 2012-3-10 11:37 ; I5 w: ]& m7 Y
一直想找到运程修改MAC和SN的办法,苦于无解啊

5 n% ^2 ?3 k1 \+ ?2 K1 I源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 | 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑
1 b- T9 e% Q4 u( W2 p. t# _$ I4 [# p' b. U% O8 \
修改的代码早有了。到今天不会编译。% y$ N4 S# x* K5 a  p* }
需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>$ r7 g9 u! Q, S  I
  2. #include <malloc.h>
    5 U. k( E$ x4 `4 I% _9 Y
  3. #include <sys/types.h>; [9 }' n( W( J9 Z
  4. #include <sys/stat.h>5 B% L! c, ~* H# U- }- b
  5. #include <sys/ioctl.h>' x' s) V) R- s$ `
  6. #include <stdio.h>
    ( o' v1 e* {7 j$ A
  7. #include <string.h>
    , U  l& x0 |& y+ I- w6 `

  8. 4 G: X2 U" s# G  Y  p/ a
  9. typedef struct {% U# B7 t/ ^# R" A8 p
  10.         unsigned int        e2prom_cmd_sub_addr;
    + C* }: X8 s! B
  11.         unsigned int        sub_addr_count;+ G8 F" D+ ~6 O
  12.         unsigned char*        e2prom_cmd_data;' |4 E# I; y4 j3 s
  13.         unsigned int        data_count;* i- D+ L; I# B" Y' I1 x7 ^+ D
  14. } e2prom_s_cmd;
    5 P7 g, k% s- g1 V! K# ?
  15. 5 E7 }; a  n% Y9 Z+ O4 Z, ?
  16. #define E2PROM_CMD_READ 17 J2 U, {( c' C6 u; d
  17. #define E2PROM_CMD_WRITE 2
    ! a9 ^' r3 s3 w- |) ?
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"$ z" e2 q2 K4 _4 [" Q# W

  19.   _5 c; ]5 P6 V5 W  |
  20. static int readparam(unsigned char *mac, unsigned char *stbid)
    2 G6 L- O& ]0 O. Q4 H  e. n
  21. {+ T# w2 L4 E" \: [
  22.         int fd, ret;+ P& E7 M1 j# J9 M2 `# U% b
  23.         e2prom_s_cmd arg;
      x6 R1 B* G" e0 R1 U" x1 }0 O/ R
  24.         unsigned char buf[0x18];! W. r8 c* I! X- J& ]( k. r# U
  25. 6 t+ E/ O/ Q. S( n* @0 h
  26.         fd = open(E2PROM_DEVICE, O_RDWR);
    4 r3 p6 N3 L0 |
  27.         if (fd  < 0) {/ W5 g8 q! z6 O2 z" G
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    6 ]% N9 I2 @- b( a' P
  29.                 return -1;# H& g  M* u# V) Y# @5 V
  30.         }
    1 q) |: g" k: f
  31.         arg.sub_addr_count      = 2;
    ; L  @- V0 E' D" \5 `0 {# z
  32.         arg.data_count          = 0x18;& H! n8 m( _7 R+ W8 E
  33.         arg.e2prom_cmd_sub_addr = 0x290;. r# Z* L/ z( E6 L7 a
  34.         arg.e2prom_cmd_data     = buf;
    ' [! _; J+ p3 W* o
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);
    & t2 Y5 u) i& w* s! p
  36.         if (ret != 0) {
    " f# r- d& z1 O; A2 T$ a+ _
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);+ O! e2 e3 L$ X2 a1 N+ H4 H) W
  38.                 return -1;
      h3 o0 J" P8 z4 g
  39.         }
    " {* \3 F$ q" o$ j/ `* J6 I4 ]7 h
  40.         memcpy(mac, buf, 6);
    % `$ S+ T* J1 y6 _5 N3 |/ R
  41.         memcpy(stbid, &buf[6], 18);
    / o, V1 y& F5 P/ |* R1 c. B
  42.         stbid[18] = '\0';
      y4 U6 _$ E; d: h" m+ r) U& L
  43. 7 u4 m6 [5 f7 p. @
  44.         return 0;
    7 S" g! y) I0 a6 B2 d/ ~
  45. }
    , D( u; @7 E2 Z. ]/ X, b# A: k* U2 k

  46. * D6 [0 g, y; g, a4 P8 n: x& b0 {
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)
    7 o' a5 _( {1 ?1 W% r
  48. {3 T. p0 ~9 ^$ G# j" I3 G1 z- y9 C5 R
  49.         int fd, ret;
    3 n/ J, p7 u5 s* v
  50.         e2prom_s_cmd arg;# [2 x3 m1 e3 }! B! r4 f* v! E
  51.         unsigned char buf[0x18];' F* g  S$ E7 `; m9 I

  52. ; Q% U/ D6 |$ C3 R( Y; }/ s  D
  53.         memcpy(buf, mac, 6);
    9 O8 Q7 T& X7 A: @% Z' m5 q
  54.         memcpy(&buf[6], stbid, 18);
    6 Q% @. c3 ?& l3 k/ E( Z1 t
  55.         fd = open(E2PROM_DEVICE, O_RDWR);2 ]1 c# ]7 u8 P! Z
  56.         if (fd  < 0) {
    ! x; ^7 A! f% [( G8 v
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    2 o0 o, t/ t# m& C; y7 K: b8 u% j
  58.                 return -1;1 w; d; i& E+ K7 q  z2 C0 }6 i- {
  59.         }. m6 A( ?  i% y" a2 Z0 N
  60.         arg.sub_addr_count      = 2;& R, f5 Z" e5 p  `* K) P
  61.         arg.data_count          = 0x18;" J) C! c' T9 u) i
  62.         arg.e2prom_cmd_sub_addr = 0x290;+ a$ ]& x7 A: R: m" r
  63.         arg.e2prom_cmd_data     = buf;
    + Q+ K8 B$ f' W: {
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);
    ; L# s* I5 t7 G* T& S5 y
  65.         if (ret != 0) {
    + n, `+ @2 ]$ g! w& z4 D  o$ g
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);3 k$ G9 h& U$ y
  67.                 return -1;0 ?  e0 k. E# }. }! x  j0 f) \
  68.         }
    ) R. ?. V0 G# [

  69. ( t, c  n! p4 r% U
  70.         return 0;+ b6 W/ `/ B2 t" {
  71. }- r# E" \; \, |

  72. 3 g( U8 `: e: d  ]
  73. int main()  M4 D3 L# `3 f* O( F
  74. {* L+ p. k: ^8 I5 _: {5 }
  75.         char c;: t8 X6 ~3 _/ i0 t6 n% Y" l
  76.         int i, macs[6];
    2 X: F; F* A7 M3 L& M, {
  77.         unsigned char mac[6];
    7 n3 g$ }7 B( f( k' Y: o
  78.         unsigned char stbid[256];4 S7 x6 U: G1 z5 f2 Y4 @) D

  79. 9 b8 r% r! z9 }4 ^- R; E
  80.         if (readparam(mac, stbid) < 0)
    3 _$ _# ?% C2 N- B/ d. w  n
  81.                 return 1;
    : |; \( i0 Q: \. s( K2 g/ N- ~, L4 B
  82. " }4 T2 z. {& U. ]
  83.         printf("Current parameters: \n");4 V, }, z& Q+ X. M$ A
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    2 w' h( J! Z$ |3 Z
  85.         printf("  STBID: %s\n", stbid);- `& O7 m& Z  I
  86.         & _$ O7 Y. s) `8 @, e
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");
    7 f; |9 F5 k; r. T1 ], c
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {. }0 B# L- @2 O$ k/ I  i9 g. B: K
  89.                 printf("Input MAC error\n");
    - ^, \7 z, @8 c0 ~! |
  90.                 return 1;
    : x4 g& }2 t; G  i8 C
  91.         }
    : t4 U0 E6 s5 C& ?
  92.         for (i=0; i<6; i++)mac[i] = macs[i];! z5 Z- A, b' P6 y# {
  93.         printf("\nPlease input new STBID: ");
    ' `1 @5 D) ]! V, z
  94.         scanf("%s", stbid);
    4 S2 }9 j, {; Y1 O
  95.         if (strlen(stbid) != 18) {: y- [# q" x1 l8 _( G& Y
  96.                 printf("Invalid stbid\n");
    # K$ N6 c/ [4 k# P: q6 _
  97.                 return 1;
    & _7 O4 v! |) G* s4 x" X8 J  p
  98.         }
    ) s# x- n' d4 \; B
  99.         printf("\nNew parameters: \n");( f( [3 X- b( E! J: V, g6 B
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);2 _) d3 I3 a" y
  101.         printf("  STBID: %s\n", stbid);/ _  \2 }+ N/ Z& O' d
  102. : W0 F! X7 d, t, n& U0 a0 |4 _/ U
  103.         printf("\nDo you want to change paramemters? (y/N) ");/ U1 t1 ?( i4 n3 q' J
  104.         for (;;) {/ ^* i5 x1 R7 \5 J, t. a' x/ g) s$ I  C+ e
  105.                 c = getchar();
    , _  t- Q: e* F7 v. E: Q
  106.                 if (c == 'y' || c == 'Y')
    7 d5 n/ \4 i. G3 F2 J, o
  107.                         break;, T. |9 M7 n& i+ R# V* K, M$ D
  108.                 if (c == 'n' || c == 'N') {
    4 @8 e# X; y" e7 [
  109.                         printf("\nAborted.\n");
    9 @" I- ~$ c  I4 H3 Q
  110.                         return 1;5 ?$ K1 J4 s: _* R, F0 R( {6 l
  111.                 }
    5 p; v9 Q+ @+ K4 l$ u1 E5 H
  112.         }# u5 B# W! R. b4 a7 a
  113.         if (writeparam(mac, stbid) == 0)
    " m( {- k- l' B  ^% k, O2 Q; r
  114.                 printf("Parameters changed.\n");! C0 t# r$ z: o) u3 X
  115. " X" b# U1 `1 B/ L* n  }
  116.         return 0;
    7 y7 l6 y3 I0 e
  117. }
复制代码
 楼主| 发表于 2012-3-23 18:24:12 | 显示全部楼层
在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。
发表于 2012-5-11 11:20:03 | 显示全部楼层
0522 发表于 2012-3-23 18:24 6 [9 _* J5 b! f: _% h
在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。
6 [- h+ n7 u$ u' K: y4 O+ v
你用的编译命令行格式是什么?9 h1 c8 t) w/ f) A
发表于 2012-5-26 19:45:12 | 显示全部楼层
已经编译出修改文件,并且修改成功
*滑块验证:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

站长推荐上一条 /1 下一条

Archiver|小黑屋|宽带技术网 |网站地图 粤公网安备44152102000001号

GMT+8, 2026-2-8 15:44 , Processed in 0.025843 second(s), 4 queries , Redis On.

Powered by Discuz! X3.5 Licensed

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表