查看: 16699|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 | 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr
    ) H+ I- i+ j- N
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig: A! x5 E; V- W1 j: V$ o& u; g
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:* E" m% n: p! Y7 _- H" ?: o
usage: himr <address> <value>. sample: himr 0x80040000 0x08 z8 _' [. ?! C; G. `5 \9 }/ ]
5 D- g; {0 ^/ ^9 y0 X- D/ T

. f+ I( z0 X4 [4 p6 z- Q不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?4 [4 f8 j. R# K) X

" Y" ~0 U: B, n, w- }& h/ }1 D2 K补充内容 (2012-3-8 09:42):) ]( @/ F: @( ~
http://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数" Y4 U$ Z2 }. S7 t2 I" V* [
这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 | 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 | 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 | 显示全部楼层
估计就是执行这个命令。
7 V4 {1 g& k; q: w  a. |7 ]; S* P) o6 o( c/ n3 o, C# U
himr <address> <value>. sample: himr 0x80040000 0x04 L2 Q* u1 ?8 e& J& p8 J  n$ d

/ P6 `: f1 G$ K2 U. |例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。
2 r9 b' g1 @8 n  l6 j3 r0 F; Ohimr 0x80040000 0x00: v( ?. v! m- u  Q' J2 u
himr 0x80040001 0x11- ?3 N4 e- @; n- {. {
himr 0x80040002 0x22
4 \; i4 L; c/ `0 T0 ahimr 0x80040003 0x33
5 G5 f5 l1 M  e: L( o) dhimr 0x80040004 0x447 V$ k  @& ?7 x; K, u
himr 0x80040005 0x552 I5 a, k' d1 |6 s; `

% Q+ j' V3 D: n0 x5 v, VSN也是类似。6 J# a. T6 ?+ N# w6 ]% ]
. E/ p" h' L# [# E& u; P5 P
现在主要是,谁告诉我们MAC和SN的地址?
# _. v/ q' J7 H; t5 S8 }
发表于 2012-3-10 11:37:46 | 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 | 显示全部楼层
wowocom 发表于 2012-3-10 11:37
+ d2 {* Z$ B# L4 k6 {0 i. j$ O% a9 B+ P5 P一直想找到运程修改MAC和SN的办法,苦于无解啊

7 f" c; }* z5 L, j9 L源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 | 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑
; K: V* u/ N- L1 f
4 A- e% e" i# s- J& L* P2 `+ T! d$ k修改的代码早有了。到今天不会编译。
6 {0 m2 x& C# m4 T1 G需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>
    ) @% a6 f3 C9 I
  2. #include <malloc.h>
    0 E: c% y2 n  \
  3. #include <sys/types.h>/ i3 `. Z% P6 ?) P0 d6 o7 w
  4. #include <sys/stat.h>' e' x" _( E  T. H" ^( q5 d
  5. #include <sys/ioctl.h>
    $ E* O4 n1 W6 M% F+ m0 k- n8 y# ^3 G
  6. #include <stdio.h>
    8 x- ~8 D- b0 O% V" F' j
  7. #include <string.h>
    " P( s5 Z* J7 G

  8. * c# e2 c3 E5 y: ?/ N3 `
  9. typedef struct {* P5 N* g+ G, c3 n% T" @
  10.         unsigned int        e2prom_cmd_sub_addr;! B, U. t" x$ q! r, j5 G/ n# U
  11.         unsigned int        sub_addr_count;- Z: b$ E$ m6 {0 g. W0 X6 j
  12.         unsigned char*        e2prom_cmd_data;4 m4 D# k) D: n' `( [
  13.         unsigned int        data_count;- A5 Q1 s1 h3 l* G" y5 p
  14. } e2prom_s_cmd;: }! H% G) d5 p* ]8 f/ B% S

  15. 9 o) x$ o; G' D
  16. #define E2PROM_CMD_READ 1) l1 M# n/ L1 C$ t2 n2 V  Q  T
  17. #define E2PROM_CMD_WRITE 2
    8 q: k1 q+ m5 ^3 O  W/ s; v
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"
    9 o; n+ @1 Q6 z

  19. 3 c: M" V0 t8 D/ f4 P% ?
  20. static int readparam(unsigned char *mac, unsigned char *stbid)- k$ ?7 k) v9 {' V# @8 r3 Y
  21. {% Y* r) i* }4 S) n1 [7 V9 i( b& E
  22.         int fd, ret;) M/ N0 c( f- X+ ]8 Z. f* g
  23.         e2prom_s_cmd arg;. y4 }9 G( \( _: w+ X- ~2 V$ ]
  24.         unsigned char buf[0x18];
    ! d1 [9 O& e6 c& w7 h

  25. : _0 {. t$ i1 |- o0 U8 c
  26.         fd = open(E2PROM_DEVICE, O_RDWR);3 |! z% F: K/ ~% v* o9 @
  27.         if (fd  < 0) {
    : m) M1 o9 z6 y0 H
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);( U3 O, V5 b# g, H8 q! x8 D6 _7 j
  29.                 return -1;9 ^5 T0 _4 a4 N( x5 w9 h! C
  30.         }
    3 w" ~* w  Z0 k7 \( V( }( q
  31.         arg.sub_addr_count      = 2;
    7 E' x* ^( I- m
  32.         arg.data_count          = 0x18;* W: ^! z4 @2 P& |) k3 H
  33.         arg.e2prom_cmd_sub_addr = 0x290;, b: O4 a0 L1 M7 s# y
  34.         arg.e2prom_cmd_data     = buf;
    # w8 j1 w2 {7 M  e9 A- S4 e
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);
    % o: V5 C( R$ [8 l) S
  36.         if (ret != 0) {; v' j9 e6 e6 h$ r9 Y
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);
    * x$ Q! l/ L2 ]! t  X6 d5 N
  38.                 return -1;
    ; |4 l% P' l8 r3 z
  39.         }9 z# `8 h8 o' [  `3 Z
  40.         memcpy(mac, buf, 6);: d" D* [9 h, }: M1 ?
  41.         memcpy(stbid, &buf[6], 18);
    , b% u( t- ^7 m) [$ V! R
  42.         stbid[18] = '\0';2 H. z, a/ L: s' o* S7 z& @" j
  43. 6 Z2 ]4 M1 q0 @9 f( M+ ]
  44.         return 0;* }$ h* e4 q6 _/ n
  45. }( f: Z# `  u# I% ]% ]
  46. ' D) x1 C9 C3 s7 h# n4 w5 _
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)- j5 P6 V' U) t! i/ n2 X- R
  48. {
    7 g( C$ `8 ~! L7 T5 d
  49.         int fd, ret;8 T3 o; |0 ^& F" a
  50.         e2prom_s_cmd arg;
    + @. p' \5 v4 \4 ^0 M
  51.         unsigned char buf[0x18];; ?% R$ k0 \; N( H
  52. 2 O  W' s% s- d* p+ n, P6 W  @, V5 ^
  53.         memcpy(buf, mac, 6);
    ) k, z: [( G* N7 t: O% p0 O: [
  54.         memcpy(&buf[6], stbid, 18);
    % H" M8 i+ j- a2 \% e9 r1 L% o9 h
  55.         fd = open(E2PROM_DEVICE, O_RDWR);( Y! S6 ]* a7 [4 D7 W! |4 U, W
  56.         if (fd  < 0) {) a* H9 K* d1 K% @5 c( T7 e6 |7 {5 ?
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);$ m6 V( o6 i6 J4 Z* D! e* _. ?
  58.                 return -1;
      G" N0 o9 ~* a2 i5 U8 a
  59.         }1 D, H4 l8 x3 C, X8 V: X$ `
  60.         arg.sub_addr_count      = 2;2 [. Y+ `  m0 ?3 H8 z# }
  61.         arg.data_count          = 0x18;
    4 n. o9 j& J" m" Y7 W, H+ o
  62.         arg.e2prom_cmd_sub_addr = 0x290;+ c  d+ M$ F" a$ S5 q) Z& }0 \
  63.         arg.e2prom_cmd_data     = buf;# x, [1 m0 _: ]# }1 U; p9 u2 m
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);5 I- l, T9 G5 V6 z$ z; z
  65.         if (ret != 0) {
    9 [5 m4 h0 F: H+ a  B& L4 u  N3 g; c/ Z
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);
    $ \8 m6 y: J: I
  67.                 return -1;* B1 p. w1 {1 I2 W$ O
  68.         }
    9 y0 v- W& f0 v( u
  69. $ A+ E8 g/ H4 V# L2 X3 D* v
  70.         return 0;
    ' t4 Y% \- ?1 W( o0 M
  71. }
    5 f" J9 b4 n2 t6 A2 }. B' \, k, G

  72. . O/ `0 W3 {. ]7 J, ~+ c4 J
  73. int main()
    1 W$ u& u8 J- i& b/ P% o
  74. {
    , J4 S! r( i; V
  75.         char c;1 s  c$ K- Q2 |1 A- B8 A3 S
  76.         int i, macs[6];
    # H6 ]) l$ d+ v2 R4 p1 T7 C
  77.         unsigned char mac[6];/ M& q0 ^4 H# i, G% j( i1 t5 _, _( [
  78.         unsigned char stbid[256];
    4 v; y" d. r0 V) ]+ R

  79. ) m4 y' k1 b. }, X: ?# s
  80.         if (readparam(mac, stbid) < 0)
    % u, g7 W/ \3 t. V
  81.                 return 1;; H& {  `, ]- Z
  82. 1 m3 Y: p3 S; Z7 k* D
  83.         printf("Current parameters: \n");
    6 |: P$ i3 T+ e# O1 _8 |
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);8 [! h* [& j/ }& t  B
  85.         printf("  STBID: %s\n", stbid);# q2 T' t$ r) F( K# ]) S: Z  b9 `
  86.        
    + C8 L! c) A  [1 e& h
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");
    " }+ i9 E/ Z: U  K0 l2 ?( |
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {6 \4 U# t% D7 e- N; C- S
  89.                 printf("Input MAC error\n");# S1 {8 m- o% [) ]; `! G
  90.                 return 1;9 ~* ]# c3 f4 M
  91.         }1 R3 H4 z1 K4 c  Z6 _; P
  92.         for (i=0; i<6; i++)mac[i] = macs[i];" k9 \8 `2 Y' p: I+ d4 X6 w
  93.         printf("\nPlease input new STBID: ");
    ; t! S: J4 G) s! [+ K
  94.         scanf("%s", stbid);3 R# h& z) ^" `8 r& h
  95.         if (strlen(stbid) != 18) {
    $ d3 N: V9 p6 O( |, V( ^1 V7 u
  96.                 printf("Invalid stbid\n");) E  R/ |% x7 h1 W- \4 @* U- J8 t+ k
  97.                 return 1;( b# r4 e0 H# n2 C+ F1 ^
  98.         }& J$ i* X7 f  t* f/ P  o
  99.         printf("\nNew parameters: \n");
    * a( r2 j' P8 \. r$ R. @* e
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    0 ~5 C7 t& W! J3 l4 `
  101.         printf("  STBID: %s\n", stbid);; }; Y) O% \1 e) Y4 L. |( f# F
  102. * e3 M; h  b2 d
  103.         printf("\nDo you want to change paramemters? (y/N) ");
    ' m  M, ^, X4 J  f
  104.         for (;;) {
    1 u2 P/ m- B1 T6 D
  105.                 c = getchar();
    5 \9 T. h; u; I/ ]6 a8 k
  106.                 if (c == 'y' || c == 'Y')
      Y  A# _( t0 h( Y, ?
  107.                         break;! v; @7 S$ y: m/ R8 ?3 J
  108.                 if (c == 'n' || c == 'N') {
    : c# l8 `3 b% N' M+ G  ]
  109.                         printf("\nAborted.\n");# u7 \' Z1 R4 i  ?' @
  110.                         return 1;
    ( e& p7 `9 H3 ~% n$ ?
  111.                 }
    / V  a. e8 t$ W' q$ c
  112.         }* y0 d$ L& e; \/ E) r: c
  113.         if (writeparam(mac, stbid) == 0) 2 ]2 z' }( T* r* K' Z6 l6 L
  114.                 printf("Parameters changed.\n");$ s( k( D- L  w! X: P8 p

  115. $ j& X: K6 D: e1 j4 g% L/ ^
  116.         return 0;1 c1 q; _( F  N
  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 1 Y" t" ^! G# P9 j
在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。

4 A& n# m# I% ?, L& ]/ [你用的编译命令行格式是什么?! [# q% B: {' w0 N/ s8 H
发表于 2012-5-26 19:45:12 | 显示全部楼层
已经编译出修改文件,并且修改成功
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

相关侵权、举报、投诉及建议等,请发 E-mail:yesdong@qq.com

Powered by Discuz! X5.0 Licensed © 2001-2026 Discuz! Team.44152102000001

在本版发帖QQ客服返回顶部